package org.tp8.sampleapp.dms.impl;

import java.io.Serializable;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import org.tp8.sampleapp.dms.custom.BaseDocCustom;
import org.tp8.sampleapp.dms.model.BaseDocModel;
import org.tp8.sampleapp.util.SampleAppLogger;

/**
 * The Class AbstractRepository.
 * 
 * @param <K>
 *            the key type
 * @param <T>
 *            the generic type
 */
@Service
@Transactional(propagation = Propagation.MANDATORY)
public abstract class AbstractDocRepository<K extends Serializable, T extends BaseDocModel>
		implements BaseDocCustom<K, T> {

	/**
	 * The Constant log.
	 */
	protected final static SampleAppLogger log = new SampleAppLogger(
			AbstractDocRepository.class);

	/**
	 * Gets the entity class.
	 * 
	 * @return the entity class
	 */
	public abstract Class<T> getEntityClass();

}
